//
//  MDHPagerListContentView.swift
//  MDHPT
//
//  Created by 高得华 on 2019/6/20.
//  Copyright © 2019年 高得华. All rights reserved.
//

import UIKit

open class MDHPagerListContentView: UIView, JXPagerViewListViewDelegate, UITableViewDelegate, UITableViewDataSource {
    
    ///内容
    @objc open lazy var tableView: UITableView = {
        let vi = UITableView()
        self.addSubview(vi)
        vi.backgroundColor = UIColor.white
        vi.separatorStyle = UITableViewCell.SeparatorStyle.none
        // set delegate and dataSource
        vi.delegate = self
        vi.dataSource = self
        vi.register(UITableViewCell.classForCoder(), forCellReuseIdentifier: "UITableViewCell")
        
        if #available(iOS 11.0, *) {
            vi.contentInsetAdjustmentBehavior = UIScrollView.ContentInsetAdjustmentBehavior.never
            vi.estimatedSectionHeaderHeight = 0;
            vi.estimatedSectionFooterHeight = 0;
            vi.rowHeight = UITableView.automaticDimension;
            vi.estimatedRowHeight = UITableView.automaticDimension;
        } else {
            // Fallback on earlier versions
            vi.estimatedRowHeight = kMDH_SCREEN_HEIGHT()
            vi.rowHeight = kMDH_SCREEN_HEIGHT()
        }
        
        return vi
    }()
    
    ///头部刷新
    @objc open var shouldRefreshHeader: Bool = false {
        didSet {
            if shouldRefreshHeader {///
                self.tableView.mh_addHeaderRefresh { [weak self] (header) in
                    if let weakSelf = self {
                        weakSelf.tableViewDidTriggerHeaderRefresh()
                    }
                }
                self.tableView.mj_header.beginRefreshing()
            }
        }
    }
    ///头部刷新
    @objc open var shouldRefreshFooter: Bool = false {
        didSet {
            if shouldRefreshFooter {///
                self.tableView.mh_addFooterRefresh { [weak self] (footer) in
                    if let weakSelf = self {
                        weakSelf.tableViewDidTriggerFooterRefresh()
                    }
                }
            }
        }
    }
    
    ///头部视图刷新
    @objc open func tableViewDidTriggerHeaderRefresh() -> () {
        self.tableView.mj_header.endRefreshing()
    }
    ///尾部刷新
    @objc open func tableViewDidTriggerFooterRefresh() -> () {
        
    }
    
    
    //MARK: - === UITableViewDelegate, UITableViewDataSource
    open func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 122
    }
    
    open func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "UITableViewCell", for: indexPath)
        return cell
    }
    
    
    //MARK: - ==== JXPagerViewListViewDelegate
    /**
     返回listView。如果是vc包裹的就是vc.view；如果是自定义view包裹的，就是自定义view自己。
     
     @return UIView
     */
    open func listView() -> UIView! {
        return self
    }
    /**
     返回listView内部持有的UIScrollView或UITableView或UICollectionView
     主要用于mainTableView已经显示了header，listView的contentOffset需要重置时，内部需要访问到外部传入进来的listView内的scrollView
     
     @return listView内部持有的UIScrollView或UITableView或UICollectionView
     */
    open func listScrollView() -> UIScrollView! {
        return nil
    }
    
    /**
     当listView内部持有的UIScrollView或UITableView或UICollectionView的代理方法`scrollViewDidScroll`回调时，需要调用该代理方法传入的callback
     
     @param callback `scrollViewDidScroll`回调时调用的callback
     */
    open func listViewDidScrollCallback(_ callback: ((UIScrollView?) -> Void)!) {
        
    }
    

    /*
    // Only override draw() if you perform custom drawing.
    // An empty implementation adversely affects performance during animation.
    override func draw(_ rect: CGRect) {
        // Drawing code
    }
    */

}
